/**
 * 智慧社区管理系统 - 移动端物业公司信息API接口
 * 
 * 严格按照《智慧社区微服务架构总览.md》的权限体系标准实现
 * 提供物业公司信息查询和管理功能
 * 
 * @author Wu.Liang
 * @date 2025-01-30
 * @version 1.0.0
 */

import request from '@/api/request'

/**
 * 物业公司信息API
 */
export const propertyInfoApi = {
  /**
   * 检查当前用户是否关联物业公司
   * @returns {Promise<Object>} 返回是否关联物业公司
   */
  hasPropertyCompany() {
    return request.get('/api/property/company/has-company')
  },

  /**
   * 获取当前用户的物业公司信息
   * @returns {Promise<Object>} 返回物业公司详细信息
   */
  getCurrentUserPropertyInfo() {
    return request.get('/api/property/company/current-user-info')
  },

  /**
   * 获取物业公司基本信息
   * @param {number} companyId 物业公司ID
   * @returns {Promise<Object>} 返回物业公司基本信息
   */
  getPropertyCompanyInfo(companyId) {
    return request.get(`/api/property/company/${companyId}`)
  },

  /**
   * 更新物业公司信息
   * @param {number} companyId 物业公司ID
   * @param {Object} data 更新数据
   * @returns {Promise<Object>} 返回更新结果
   */
  updatePropertyCompanyInfo(companyId, data) {
    return request.put(`/api/property/company/${companyId}`, data)
  },

  /**
   * 获取物业公司列表（分页）
   * @param {Object} params 查询参数
   * @returns {Promise<Object>} 返回物业公司列表
   */
  getPropertyCompanyList(params) {
    return request.get('/api/property/company/list', params)
  },

  /**
   * 创建物业公司
   * @param {Object} data 物业公司数据
   * @returns {Promise<Object>} 返回创建结果
   */
  createPropertyCompany(data) {
    return request.post('/api/property/company', data)
  },

  /**
   * 删除物业公司
   * @param {number} companyId 物业公司ID
   * @returns {Promise<Object>} 返回删除结果
   */
  deletePropertyCompany(companyId) {
    return request.delete(`/api/property/company/${companyId}`)
  },

  /**
   * 获取物业公司统计信息
   * @param {Object} params 查询参数
   * @returns {Promise<Object>} 返回统计信息
   */
  getPropertyCompanyStatistics(params) {
    return request.get('/api/property/company/statistics', params)
  },

  /**
   * 获取物业公司员工列表
   * @param {number} companyId 物业公司ID
   * @param {Object} params 查询参数
   * @returns {Promise<Object>} 返回员工列表
   */
  getPropertyCompanyStaff(companyId, params) {
    return request.get(`/api/property/company/${companyId}/staff`, params)
  },

  /**
   * 添加物业公司员工
   * @param {number} companyId 物业公司ID
   * @param {Object} data 员工数据
   * @returns {Promise<Object>} 返回添加结果
   */
  addPropertyCompanyStaff(companyId, data) {
    return request.post(`/api/property/company/${companyId}/staff`, data)
  },

  /**
   * 移除物业公司员工
   * @param {number} companyId 物业公司ID
   * @param {number} staffId 员工ID
   * @returns {Promise<Object>} 返回移除结果
   */
  removePropertyCompanyStaff(companyId, staffId) {
    return request.delete(`/api/property/company/${companyId}/staff/${staffId}`)
  },

  /**
   * 获取物业公司服务区域
   * @param {number} companyId 物业公司ID
   * @returns {Promise<Object>} 返回服务区域信息
   */
  getPropertyCompanyServiceAreas(companyId) {
    return request.get(`/api/property/company/${companyId}/service-areas`)
  },

  /**
   * 更新物业公司服务区域
   * @param {number} companyId 物业公司ID
   * @param {Object} data 服务区域数据
   * @returns {Promise<Object>} 返回更新结果
   */
  updatePropertyCompanyServiceAreas(companyId, data) {
    return request.put(`/api/property/company/${companyId}/service-areas`, data)
  },

  /**
   * 获取物业公司资质信息
   * @param {number} companyId 物业公司ID
   * @returns {Promise<Object>} 返回资质信息
   */
  getPropertyCompanyQualification(companyId) {
    return request.get(`/api/property/company/${companyId}/qualification`)
  },

  /**
   * 更新物业公司资质信息
   * @param {number} companyId 物业公司ID
   * @param {Object} data 资质信息数据
   * @returns {Promise<Object>} 返回更新结果
   */
  updatePropertyCompanyQualification(companyId, data) {
    return request.put(`/api/property/company/${companyId}/qualification`, data)
  },

  /**
   * 上传物业公司资质文件
   * @param {number} companyId 物业公司ID
   * @param {FormData} formData 文件数据
   * @returns {Promise<Object>} 返回上传结果
   */
  uploadPropertyCompanyQualification(companyId, formData) {
    return request.post(`/api/property/company/${companyId}/qualification/upload`, formData, {
      headers: {
        'Content-Type': 'multipart/form-data'
      }
    })
  },

  /**
   * 获取物业公司联系方式
   * @param {number} companyId 物业公司ID
   * @returns {Promise<Object>} 返回联系方式信息
   */
  getPropertyCompanyContact(companyId) {
    return request.get(`/api/property/company/${companyId}/contact`)
  },

  /**
   * 更新物业公司联系方式
   * @param {number} companyId 物业公司ID
   * @param {Object} data 联系方式数据
   * @returns {Promise<Object>} 返回更新结果
   */
  updatePropertyCompanyContact(companyId, data) {
    return request.put(`/api/property/company/${companyId}/contact`, data)
  },

  /**
   * 获取物业公司服务时间
   * @param {number} companyId 物业公司ID
   * @returns {Promise<Object>} 返回服务时间信息
   */
  getPropertyCompanyServiceHours(companyId) {
    return request.get(`/api/property/company/${companyId}/service-hours`)
  },

  /**
   * 更新物业公司服务时间
   * @param {number} companyId 物业公司ID
   * @param {Object} data 服务时间数据
   * @returns {Promise<Object>} 返回更新结果
   */
  updatePropertyCompanyServiceHours(companyId, data) {
    return request.put(`/api/property/company/${companyId}/service-hours`, data)
  },

  /**
   * 获取物业公司支付账户信息
   * @param {number} companyId 物业公司ID
   * @returns {Promise<Object>} 返回支付账户信息
   */
  getPropertyCompanyPaymentAccount(companyId) {
    return request.get(`/api/property/company/${companyId}/payment-account`)
  },

  /**
   * 更新物业公司支付账户信息
   * @param {number} companyId 物业公司ID
   * @param {Object} data 支付账户数据
   * @returns {Promise<Object>} 返回更新结果
   */
  updatePropertyCompanyPaymentAccount(companyId, data) {
    return request.put(`/api/property/company/${companyId}/payment-account`, data)
  },

  /**
   * 验证物业公司编码唯一性
   * @param {string} companyCode 物业公司编码
   * @param {number} excludeId 排除的ID（用于编辑时验证）
   * @returns {Promise<Object>} 返回验证结果
   */
  validatePropertyCompanyCode(companyCode, excludeId = null) {
    const params = { companyCode }
    if (excludeId) {
      params.excludeId = excludeId
    }
    
    return request.get('/api/property/company/validate-code', params)
  },

  /**
   * 获取物业公司下拉选项
   * @returns {Promise<Object>} 返回物业公司选项列表
   */
  getPropertyCompanyOptions() {
    return request.get('/api/property/company/options')
  },

  /**
   * 批量操作物业公司
   * @param {Object} data 批量操作数据
   * @returns {Promise<Object>} 返回操作结果
   */
  batchOperationPropertyCompany(data) {
    return request.post('/api/property/company/batch', data)
  },

  /**
   * 导出物业公司数据
   * @param {Object} params 导出参数
   * @returns {Promise<Object>} 返回导出结果
   */
  exportPropertyCompanyData(params) {
    return request.get('/api/property/company/export', params, { responseType: 'blob' })
  },

  /**
   * 导入物业公司数据
   * @param {FormData} formData 导入文件数据
   * @returns {Promise<Object>} 返回导入结果
   */
  importPropertyCompanyData(formData) {
    return request.post('/api/property/company/import', formData, {
      headers: {
        'Content-Type': 'multipart/form-data'
      }
    })
  }
}

// 默认导出
export default propertyInfoApi 